#define DEBUG
#include <cstdio>

using namespace std;

typedef long long ll;

const int maxn=200000;

void swap(int &a, int &b) {
  int t;
  t=a, a=b, b=t;
}

class TreeArray {
public:
  int n;
  ll a[maxn+1];

  int lowbit(int x) {
    return x&(-x);
  }

  void add(int o, int v) {
    for (; o<=n; o+=lowbit(o)) {
      a[o]+=v;
    }
  }

  ll get(int o) {
    ll ret=0;
    for (; o>0; o-=lowbit(o)) {
      ret += a[o];
    }
    return ret;
  }
};

int main() {
  freopen("bubble.in", "r", stdin);
  freopen("bubble.out", "w", stdout);

  static int p[maxn+1], tot[maxn+1];
  int n, m;
  scanf("%d %d", &n, &m);
  for (int i=1; i<=n; i++) {
    scanf("%d", p+i);
  }

  static TreeArray cnt, sum, num;
  cnt.n=n, sum.n=num.n=n+1;
  for (int i=1; i<=n; i++) {
    tot[i] = i-1-cnt.get(p[i]);
    cnt.add(p[i], 1);
  }
  for (int i=1; i<=n; i++) {
    sum.add(tot[i]+1, tot[i]);
    num.add(tot[i]+1, 1);
  }

  for (int i=1; i<=m; i++) {
    int t, c;
    scanf("%d %d", &t, &c);
    if (t==1) {
      sum.add(tot[c+1]+1, -tot[c+1]);
      num.add(tot[c+1]+1, -1);
      sum.add(tot[c]+1, -tot[c]);
      num.add(tot[c]+1, -1);
      swap(tot[c], tot[c+1]);
      if (p[c]<p[c+1]) {
        tot[c+1]++;
      } else {
        tot[c]--;
      }
      swap(p[c], p[c+1]);
      sum.add(tot[c]+1, tot[c]);
      num.add(tot[c]+1, 1);
      sum.add(tot[c+1]+1, tot[c+1]);
      num.add(tot[c+1]+1, 1);
    } else {
      printf("%lld\n", sum.get(n+1)-sum.get(c+1)-(num.get(n+1)-num.get(c+1))*c);
    }
  }

  fclose(stdin);
  fclose(stdout);
};
